package cn.com.blueInfo.bpm.template.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 流程静态模板定义表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:41:15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "流程静态模板定义 接收参数及校验")
public class ProcessDTO extends BaseDTO {

    /** 流程模板编码 */
    @NotBlank(message = "流程模板编码 不能为空")
    @Schema(description = "流程模板编码")
    private String templateCode;
    /** 流程模板名称 */
    @NotBlank(message = "流程模板名称 不能为空")
    @Schema(description = "流程模板名称")
    private String templateName;
    /** 版本号 */
    @NotBlank(message = "版本号 不能为空")
    @Schema(description = "版本号")
    private String version;
    /** 模板描述 */
    @Schema(description = "模板描述")
    private String description;
    /** 关联表单ID */
    @NotNull(message = "关联表单ID 不能为空")
    @Schema(description = "关联表单ID")
    private Long formId;
    /** 流程加载时执行的前端函数 */
    @Schema(description = "流程加载时执行的前端函数")
    private String processLoadFunc;
    /** 流程提交时执行的函数 */
    @Schema(description = "流程提交时执行的函数")
    private String submitFunc;

    /**
     * 流程静态模板定义 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "流程静态模板定义 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 流程模板编码 */
        @Schema(description = "流程模板编码")
        private String templateCode;
        /** 流程模板名称 */
        @Schema(description = "流程模板名称")
        private String templateName;
        /** 版本号 */
        @Schema(description = "版本号")
        private String version;
        /** 模板描述 */
        @Schema(description = "模板描述")
        private String description;
        /** 关联表单ID */
        @Schema(description = "关联表单ID")
        private Long formId;
        /** 流程加载时执行的前端函数 */
        @Schema(description = "流程加载时执行的前端函数")
        private String processLoadFunc;
        /** 流程提交时执行的函数 */
        @Schema(description = "流程提交时执行的函数")
        private String submitFunc;

    }

    /**
     * 流程静态模板定义 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "流程静态模板定义 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {

        /** 模板描述 */
        @Schema(description = "模板描述")
        private String description;
        /** 流程加载时执行的前端函数 */
        @Schema(description = "流程加载时执行的前端函数")
        private String processLoadFunc;
        /** 流程提交时执行的函数 */
        @Schema(description = "流程提交时执行的函数")
        private String submitFunc;

    }

}